package com.xiaobao.campusLostFoundAfter.controller;

import com.xiaobao.campusLostFoundAfter.common.Result;
import com.xiaobao.campusLostFoundAfter.pojo.BaseItem;
import com.xiaobao.campusLostFoundAfter.pojo.FoundItem;
import com.xiaobao.campusLostFoundAfter.pojo.LostItem;
import com.xiaobao.campusLostFoundAfter.service.FoundItemService;
import com.xiaobao.campusLostFoundAfter.service.LostItemService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.ArrayList;
import java.util.List;

//物品基础信息
@RestController
@RequestMapping("/baseItem")
public class BaseItemController {
    private static final Logger log = LoggerFactory.getLogger(BaseItemController.class);
    private final FoundItemService foundItemService;
    private final LostItemService lostItemService;

    public BaseItemController(FoundItemService foundItemService, LostItemService lostItemService) {
        this.foundItemService = foundItemService;
        this.lostItemService = lostItemService;
    }

    //根据用户Id获取全部的基础信息
    @RequestMapping("/getAll/{userId}")
    public Result<List<BaseItem>> getAllBaseItems(@PathVariable String userId) {
        // 初始化一个列表，用于存储用户的所有基础物品信息
        List<BaseItem> baseItems = new ArrayList<>();

        // 获取用户所有的招领物品信息
        List<FoundItem> foundItems = foundItemService.getFoundItemByUserId(userId);
        // 获取用户所有的寻物启事信息
        List<LostItem> lostItems = lostItemService.getLostItemByUserId(userId);
        log.info("用户所有的招领物品信息：{}", foundItems);


        // 遍历招领物品列表，将每个招领物品的信息封装到基础物品对象中
        for (FoundItem foundItem : foundItems) {
            // 创建一个基础物品对象，用于封装物品信息
            BaseItem baseItem = new BaseItem();
            baseItem.setItemId(foundItem.getFoundId());
            baseItem.setItemName(foundItem.getTitle());
            baseItem.setItemType("Found");
            baseItem.setItemDescription(foundItem.getDescription());
            baseItem.setItemLocation(foundItem.getFoundLocation());
            log.info("图片：{}", foundItem.getImages());
            baseItem.setItemImage(foundItem.getImages().get(0).get("url").toString());
            baseItem.setCreateTime(foundItem.getCreateTime());
            baseItem.setStatus(foundItem.getStatus());
            baseItems.add(baseItem);
        }

        // 遍历寻物启事列表，将每个寻物启事的信息封装到基础物品对象中
        for (LostItem lostItem : lostItems) {
            // 创建一个基础物品对象，用于封装物品信息
            BaseItem baseItem = new BaseItem();
            baseItem.setItemId(lostItem.getLostId());
            baseItem.setItemName(lostItem.getTitle());
            baseItem.setItemType("Lost");
            baseItem.setItemDescription(lostItem.getDescription());
            baseItem.setItemLocation(lostItem.getLostLocation());
            baseItem.setItemImage(lostItem.getImages().get(0).get("url").toString());
            baseItem.setCreateTime(lostItem.getCreateTime());
            baseItem.setStatus(lostItem.getStatus());
            baseItems.add(baseItem);
        }

        // baseList根据创建时间排序
        baseItems.sort((o1, o2) -> o2.getCreateTime().compareTo(o1.getCreateTime()));
        log.info("获取用户所有物品信息成功");
        log.info("用户所有物品信息：{}", baseItems);
        // 返回封装了所有基础物品信息的列表
        return Result.success(baseItems);
    }

}
